package com.example.springboot_springsecurity_jwt_redis.dao;



import com.example.springboot_springsecurity_jwt_redis.pojo.Blog;
import com.example.springboot_springsecurity_jwt_redis.vo.ArchiveInfo;

import java.util.List;

public interface BlogMapper {

    /**
     * 查询所有博客的点赞量
     * @return
     */
    Integer selectAllLikeNumCounts();

    /**
     * 查询所有博客的浏览量
     * @return
     */
    Integer selectAllBrowseNumCounts();

    /**
     * 查询所有博客总数
     * @return
     */
    Integer selectAllBlogCount();

    /**
     * 分页查询博客信息
     * @return
     */
    List<Blog> selectPageBlogInfo();

    /**
     * 按浏览量分页查询博客信息
     * @return
     */
    List<Blog> selectPageBlogInfoByBrowseNum();

    /**
     * 查询热门博客推荐信息
     * @param hotBlogLimitNum
     * @return
     */
    List<Blog> selectHotBlogs(Integer hotBlogLimitNum);

    /**
     * 查询最新博客的推荐信息
     * @param newBlogLimitNum
     * @return
     */
    List<Blog> selectNewBlogs(Integer newBlogLimitNum);

    /**
     * 根据博客id,查询博客的详细信息
     * @param blogId
     * @return
     */
    Blog selectBlogDetailInfo(Integer blogId);

    /**
     * 查询归档信息
     * @return
     */
    List<ArchiveInfo> selectArchivesInfo();

    /**
     *  按年月分页归档查询博客列表信息
     * @param date
     * @return
     */
    List<Blog> selectBlogInfoByArchive(String date);

    /**
     * 查询该博客详情和所有评论
     * @param blogId
     * @return
     */
    List<Blog> selectBlogAllCommentsInfo(Integer blogId);

    /**
     * 查询该博客详情和所有评论总数
     * @param blogId
     * @return
     */
    Integer selectBlogAllCommentsCount(Integer blogId);


    int deleteByPrimaryKey(Integer blogId);

    int insert(Blog record);

    int insertSelective(Blog record);

    Blog selectByPrimaryKey(Integer blogId);

    int updateByPrimaryKeySelective(Blog record);

    int updateByPrimaryKeyWithBLOBs(Blog record);

    int updateByPrimaryKey(Blog record);
}